﻿using SourceStack.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SourceStack.Repositories
{
    public class ProblemRepository
    {
        private static IList<Problem> problems;
        static ProblemRepository()
        {
            problems = new List<Problem>
            {
                new Problem
                {
                    Id=1 ,
                    Title=@"多线程访问同一对象的同步问题",
                    Body=@"含有多个属性的对象，当此对象创建后还没有初始化X字段时，其他线程就使用X字段导致数据不同步的问题。

                            举例：

                            线程A从网络得到数据更新对象student的所有属性；

                            线程B使用student的属性name和age，并显示出来。


                            这样会有一个问题：名字和年龄不对应。

                            第一轮得到小李的信息：name:小李，age:10

                            第二轮得到小王的信息：name:小王，age:10，本来小王的age应该是66的，结果显示的是上次小李的。


                            各位大神指导一下如何处理这种问题的。",
                    Author=new User
                    {
                        Id=23,
                        Name="xulijing "
                    },
                    PublishTime=new DateTime(2020,10,2,5,23,15)
                },
                 new Problem
                {
                    Id=2 ,
                    Title=@" ASP 网站迁移",
                    Body=@"在服务器上把原先的asp网站整体迁移出来，在新的服务器上重新布置",
                    Author=new User
                    {
                        Id=25,
                        Name=" skyline "
                    },
                     PublishTime=new DateTime(2020,10,2,5,23,15)
                },
                   new Problem
                {
                    Id=3 ,
                    Title=@"自学完了源栈二期视频，想请教一下简历和面试相关事宜",
                    Body=@"在B站看完了二期视频，目前准备投简历找工作，但对于简历的撰写没有思绪，也想请教一下面试经验之类，麻烦大家不吝赐教。……",
                    Author=new User
                    {
                        Id=23,
                        Name="xulijing "
                    },
                    PublishTime=new DateTime(2020,10,2,5,23,15)
                },
                 new Problem
                {
                    Id=4 ,
                    Title=@" 额，怎么说，看下吧，谢谢了{》=《}，我只有五个帮币，呜呜",
                    Body=@"java语言写的代码需要先编译为可执行文件，才能被jvm执行。在下载的jdk安装目录下的bin目录，
                        有两个可执行程序java.exe和javac.exe，javac就是用来编译的，java是执行编译后的class文件。
                        刚写好的java程序是.java结尾的文件，需要经过编译，变为.class结尾的文件，然后交给虚拟机执行。
                        新建一个HelloWorld.java文件，将以下代码贴入：public class HelloWorld { public static void main(String[] args……",
                    Author=new User
                    {
                        Id=25,
                        Name=" skyline "
                    },
                     PublishTime=new DateTime(2020,10,2,5,23,15)
                },
                  new Problem
                {
                    Id=5 ,
                    Title=@"多线程访问同一对象的同步问题",
                    Body=@"含有多个属性的对象，当此对象创建后还没有初始化X字段时，其他线程就使用X字段导致数据不同步的问题。

                            举例：

                            线程A从网络得到数据更新对象student的所有属性；

                            线程B使用student的属性name和age，并显示出来。


                            这样会有一个问题：名字和年龄不对应。

                            第一轮得到小李的信息：name:小李，age:10

                            第二轮得到小王的信息：name:小王，age:10，本来小王的age应该是66的，结果显示的是上次小李的。


                            各位大神指导一下如何处理这种问题的。",
                    Author=new User
                    {
                        Id=23,
                        Name="xulijing "
                    },
                    PublishTime=new DateTime(2020,10,2,5,23,15)
                },
               new Problem
                {
                    Id=6 ,
                    Title=@"多线程访问同一对象的同步问题",
                    Body=@"含有多个属性的对象，当此对象创建后还没有初始化X字段时，其他线程就使用X字段导致数据不同步的问题。

                            举例：

                            线程A从网络得到数据更新对象student的所有属性；

                            线程B使用student的属性name和age，并显示出来。


                            这样会有一个问题：名字和年龄不对应。

                            第一轮得到小李的信息：name:小李，age:10

                            第二轮得到小王的信息：name:小王，age:10，本来小王的age应该是66的，结果显示的是上次小李的。


                            各位大神指导一下如何处理这种问题的。",
                    Author=new User
                    {
                        Id=23,
                        Name="xulijing "
                    },
                    PublishTime=new DateTime(2020,10,2,5,23,15)
                },
                 new Problem
                {
                    Id=7 ,
                    Title=@" ASP 网站迁移",
                    Body=@"在服务器上把原先的asp网站整体迁移出来，在新的服务器上重新布置",
                    Author=new User
                    {
                        Id=25,
                        Name=" skyline "
                    },
                     PublishTime=new DateTime(2020,10,2,5,23,15)
                },
                   new Problem
                {
                    Id=8,
                    Title=@"自学完了源栈二期视频，想请教一下简历和面试相关事宜",
                    Body=@"在B站看完了二期视频，目前准备投简历找工作，但对于简历的撰写没有思绪，也想请教一下面试经验之类，麻烦大家不吝赐教。……",
                    Author=new User
                    {
                        Id=23,
                        Name="xulijing "
                    },
                    PublishTime=new DateTime(2020,10,2,5,23,15)
                },
                 new Problem
                {
                    Id=9,
                    Title=@" 额，怎么说，看下吧，谢谢了{》=《}，我只有五个帮币，呜呜",
                    Body=@"java语言写的代码需要先编译为可执行文件，才能被jvm执行。在下载的jdk安装目录下的bin目录，
                        有两个可执行程序java.exe和javac.exe，javac就是用来编译的，java是执行编译后的class文件。
                        刚写好的java程序是.java结尾的文件，需要经过编译，变为.class结尾的文件，然后交给虚拟机执行。
                        新建一个HelloWorld.java文件，将以下代码贴入：public class HelloWorld { public static void main(String[] args……",
                    Author=new User
                    {
                        Id=25,
                        Name=" skyline "
                    },
                     PublishTime=new DateTime(2020,10,2,5,23,15)
                },
                  new Problem
                {
                    Id=10,
                    Title=@"多线程访问同一对象的同步问题",
                    Body=@"含有多个属性的对象，当此对象创建后还没有初始化X字段时，其他线程就使用X字段导致数据不同步的问题。

                            举例：

                            线程A从网络得到数据更新对象student的所有属性；

                            线程B使用student的属性name和age，并显示出来。


                            这样会有一个问题：名字和年龄不对应。

                            第一轮得到小李的信息：name:小李，age:10

                            第二轮得到小王的信息：name:小王，age:10，本来小王的age应该是66的，结果显示的是上次小李的。


                            各位大神指导一下如何处理这种问题的。",
                    Author=new User
                    {
                        Id=23,
                        Name="xulijing "
                    },
                    PublishTime=new DateTime(2020,10,2,5,23,15)
                },
            };
        }

        internal IList<Problem> Get(int pageIndex, int pageSize)
        {
            return problems
                .Skip((pageIndex - 1) * pageSize)
                .Take(pageSize).ToList();
        }
        internal int GetCount()
        {
            return problems.Count();

        }
        public ProblemRepository()
        {

        }
        public Problem Find(int id)
        {
            return problems.Where(a => a.Id == id).SingleOrDefault();
        }
        void Delete()
        {

        }
    }
}
